#ifndef VS1STCAMERACONTROLLER_H
#define VS1STCAMERACONTROLLER_H
#include "VSMath.h"
#include "VSVector3.h"
#include "VSController.h"
namespace VSEngine2
{
	class VSStream;
	class VSGRAPHIC_API VS1stCameraController : public VSController
	{
		//PRIORITY
		
		//RTTI
		DECLARE_RTTI;
	public:
		VS1stCameraController();
		virtual ~VS1stCameraController();
		VSREAL m_RotXDelta;
		VSREAL m_RotYDelta;
		VSREAL m_MoveXDelta;
		VSREAL m_MoveYDelta;
		VSREAL m_MoveZDelta;
		virtual bool UpdateEx(double dAppTime);
	public:
		static bool RegisterMainFactory();

		virtual unsigned int DiskUse()const;

		virtual bool Save(VSStream & rStream,unsigned int &iSaveUse)const;
		virtual bool Load(VSStream & rStream,unsigned int &iSaveUse);
	private:
		static bool InitialClassFactory();	
		static VSObject * FactoryFunc();
		static bool ms_bRegisterMainFactory;
	public:
		virtual bool Clone(const VSObject *pObject,unsigned int uiType);
	};

	typedef VSPointer<VS1stCameraController> VS1stCameraControllerPtr;
}
#endif